Matplotlib tutorial

Matplotlib je Pythonovská knižnica, ktorá je určená pre kreslenie 2D/3D diagramov.

Ďalšie informácie:

Modul matplotlib

Doporučená konvencia pre importovanie modulu matplotlib:

In [1]:
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt

Magický príkaz pre IPython %matplotlib inline integruje knižnicu Matplotlib s webovým prostredím.

Dokumentácia:

In [2]:
# vytvorenie obrázka s jedným diagramom
fig, ax = plt.subplots()

# nastavenie veľkosti obrázka
#fig.set_size_inches(6, 4) # argumenty: šírka (štandardne 6), výška (štandardne 4)

# pomenovanie diagramu
#ax.set_title("Môj prvý diagram")

# nastavenie rovnakej mierky v oboch osiach diagramu
#ax.axis('equal')

# nastavenie limit kótovania pre obe súradnicové osy
#ax.axis([1, 4, 1, 16])

# vyznačenie čiar súradnicovej siete diagramu
#ax.grid()

# samotné zobrazenie obrázka
plt.show()

# zatvorenie všetkých okien obrázka
plt.close('all')

Graf funkcie

Nakreslenie grafu jednoduchej funkčnej závislosti, ktorý odpovedá množine usporiadaných dvojíc $\{(1,1), (2,4), (3,9), (4,16)\}$.

Dokumentácia:

In [3]:
fig, ax = plt.subplots()

# určenie a zobrazenie funkčnej závislosti
ax.plot([1, 2, 3, 4], [1, 4, 9, 16], color='red', linestyle='', marker='o')
#ax.plot([1, 2, 3, 4], [1, 4, 9, 16], c='r', ls='', marker='o') # to isté
#ax.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro') # to isté

plt.show()
plt.close('all')

Graf funkcie, 2. verzia

V podstate to isté ako v predchadzajúcom príklade, len je to zapísané iným spôsobom.

Dokumentácia:

In [4]:
# vstupné údaje ako polia typu ndarray
X = np.array([1, 2, 3, 4]) # hodnoty nezávislej premennej
Y = X ** 2                 # hodnoty závislej premennej, ekvivalentné príkazu Y = np.array([1, 4, 9, 16])

fig, ax = plt.subplots()

ax.plot(X, Y, 'b--s')

# pomenovanie 1. súradnicovej osi
ax.set_xlabel('nezávislá premenná')
# pomenovanie 2. súradnicovej osi
ax.set_ylabel('závislá premenná')

# nastavenie kótovania pre 1. súradnicovú os
ax.set_xticks([1, 2, 3, 4])
# nastavenie kótovania pre 2. súradnicovú os
ax.set_yticks([4, 8, 12, 16])

plt.show()
plt.close('all')

Dva grafy v jednom diagrame

Obrázok s dvoma grafmi v tom istom diagrame.

In [5]:
# vstupné údaje pre oba grafy
X = np.array([1, 2, 3, 4]) # hodnoty nezávislej premennej
Y1 = 4 * X - 2             # hodnoty závislej premennej pre 1. graf
Y2 = X ** 2                # hodnoty závislej premennej pre 2. graf

fig, ax = plt.subplots()

# dva grafy v jednom diagrame
ax.plot(X, Y1, 'k-o', mfc='w')
ax.plot(X, Y2, 'g:.')
#ax.plot(X, Y1, 'k-o', X, Y2, 'g:.') # alternatívny zápis

ax.set_xticks([1, 2, 3, 4])
ax.set_yticks([4, 8, 12, 16])

plt.show()
plt.close('all')

Obrázky s viacerými diagramami

V nasledujúcich príkladoch si ukážeme, ako vytvoriť obrázok, ktorý obsahuje viac než jeden diagram.

Dokumentácia:

In [6]:
# vstupné údaje
X = np.array([1, 2, 3, 4])
Y1 = 4 * X - 2
Y2 = X ** 2

# vytvorenie obrázka s dvoma diagramami, každý z nich je v inom stĺpci
fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, sharex=True, sharey=True)
fig.set_size_inches(12, 4)

ax1.plot(X, Y1, 'r-o')
ax2.plot(X, Y2, 'b--s')

# nastavenie zdielaného kótovania na 1. súradnicovej osi
#plt.xticks([1, 2, 3, 4])
# nastavenie zdielaného kótovania na 2. súradnicovej osi
#plt.yticks([4, 8, 12, 16])

plt.show()
plt.close('all')
In [7]:
# vstupné údaje
X = np.array([1, 2, 3, 4])
Y1 = 4 * X - 2
Y2 = X ** 2

# vytvorenie obrázka s dvoma diagramami, každý z nich je v inom riadku
fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, sharex=True, sharey=True)
fig.set_size_inches(6, 8)

ax1.plot(X, Y1, 'r-o')
ax2.plot(X, Y2, 'b--s')

# nastavenie zdielaného kótovania na 1. súradnicovej osi
#plt.xticks([1, 2, 3, 4])
# nastavenie zdielaného kótovania na 2. súradnicovej osi
#plt.yticks([4, 8, 12, 16])

plt.show()
plt.close('all')
In [8]:
# vstupné údaje
X = np.array([1, 2, 3, 4])
Y1 = 4 * X - 2
Y2 = X ** 2

# vytvorenie obrázka so 6 diagramami umiestnených do 2 riadkov a 3 stĺpcov
fig, ((ax11, ax12, ax13), (ax21, ax22, ax23)) = plt.subplots(nrows=2, ncols=3, sharex=True, sharey=True)
fig.set_size_inches(18, 8)

# prvý riadok
ax11.plot(X, Y1, 'r-')
ax12.plot(X, Y1, 'b--o')
ax13.plot(X, Y1, 'g:s')

# druhý riadok
ax21.plot(X, Y1, 'k-')
ax22.plot(X, Y1, 'k--o')
ax23.plot(X, Y1, 'k:s')

# nastavenie zdielaného kótovania na 1. súradnicovej osi
#plt.xticks([1, 2, 3, 4])
# nastavenie zdielaného kótovania na 2. súradnicovej osi
#plt.yticks([4, 8, 12, 16])

plt.show()
plt.close('all')